home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 5
/
Gekikoh Dennoh Club Vol. 5 (Japan).7z
/
Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin
/
internet
/
webx
/
webxp040.lzh
/
Source
/
WebXpression.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-09-27
|
19KB
|
769 lines
/* WebXpression.c */
/* Not for communication, only for xpression... */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/dos.h>
#include <sys/iocs.h>
#include <sys/xglob.h>
#include <unistd.h>
#include "WebXpression.h"
#include "WebCache/WebCache.h"
#include "FuncUrl/FuncUrl.h"
extern void InitHtml2Xpression (void);
extern XPTEXT *Html2Xpression (HTTPFILE *, XPTEXT *);
extern XPTEXT *Plain2Xpression (HTTPFILE *, XPTEXT *);
extern void ReCheckLinkTable (XPTEXT *);
extern int SearchAnchor (XPTEXT *, char *);
extern void FreeXptext (XPTEXT *);
extern void FreeXptext2 (XPTEXT *);
extern int DispAll (XPTEXT *);
extern void *TextVdisp (void);
extern void DispBack (void);
extern void ClearText (void);
extern int GetFileInit (void);
extern int GetFile (HTTPFILE *);
extern int InitHistory (void);
extern void AddHistory (char *, char *, int);
extern char *BeforeHistory (char *, int *);
extern int LoadImage (void);
extern int cut_disp (void *, void *, int);
extern void McInit (void);
extern void McPrint (char *);
extern void McDbPrint (char *);
extern int InitConfig (char *);
extern void show_mouse_cursor (void);
extern void hide_mouse_cursor (void);
extern unsigned short in_link_num;
extern IMAGE_LIST *image_list_top, *image_list_end, *image_list_ptr;
extern char WebPage2;
extern char WebPage3;
extern unsigned short webcache_save;
extern unsigned char hold_online;
extern char text_editor[];
extern char refresh_rate;
/* âXâ^âbâNâTâCâYé╞âqü[âvâTâCâYé≡ÄwÆΦ */
int _stacksize = 32 * 1024;
int _heapsize = 256 * 1024;
unsigned char d_option = 0;
static unsigned char t_option = 0;
static int old_screen_mode;
static int old_fnkmod;
static char address_book[92]; /* "file://" ì₧é▌é╠âAâhâîâXÆáâtâïâpâXâtâ@âCâïû╝ */
struct _psp *mypsp;
volatile signed char quit_flag; /* â}âEâXé┼æÇì∞é│éΩé╜îïë╩üiQUIT_NON ôÖé¬ôⁿéΘüj */
unsigned char freeze; /* ëµû╩ò`ëµï╓Ä~âtâëâO */
XPTEXT *disp_xptext; /* ò\ĪÆåé╠ xptext */
char kmode = K_AUTO; /* ô·û{îΩò╢ÄÜâRü[âh */
extern unsigned short config_color[8];
extern unsigned short html_color[8];
unsigned short text_color[7];
unsigned char from_network;
#define TEXTVRAM 0xe00000
#define STR_DISP_COMPLETE "äƒäƒäƒäƒäƒäƒäƒäƒäƒäƒäƒäƒ ò\Īè«ù╣ äƒ\n"
static void Init2 (void);
static void Tini2 (void);
static void usage (void)
{
printf (
"WWW âuâëâEâU WebXpression.x ver0.40\n"
" programmed by Mitsuky <FreeSoftware>\n"
"Hyper Text Transfer Protocol é╔Å]é┴é─ HTML âtâ@âCâïé≡ò\Īé╡é▄é╖\n"
"âlâbâgâÅü[âNÅπé╠âtâ@âCâïé≡ò\Īé╖éΘÅΩìçüATCP/IP âhâëâCâoé¬òKùvé┼é╖\n"
"Ägùpû@ : WebXpression [option] [URL]\n"
"[option]\n"
" -Câtâ@âCâïû╝ : .cnf âtâ@âCâïé≡ÄwÆΦ\n"
" -D : âfâoâbâOâéü[âh\n"
"URL ûóÄwÆΦÄ₧é╔é═âAâhâîâXÆáé≡ò\Īé╡é▄é╖\n"
);
}
#if 1
/* [INTERRUPT] é¬ëƒé│éΩé╜éτé▒é▒é╔ö≥é±é┼é¡éΘ */
static void interrupt_abort (void)
{
quit_flag = QUIT_EXIT;
_iocs_vdispst (0, 0, 0);
}
#endif
/* -d âIâvâVâçâôùp */
static void DumpXptext (XPTEXT * xptext)
{
LINE_PTR *l = xptext->line_ptr;
unsigned char *n, *p;
unsigned char c;
int i, line = 0;
do {
p = l->ptr;
n = p + l->num;
while (p < n) {
c = *p++;
if (c == 0x09) {
putchar (c);
continue;
}
if (c < ' ') {
continue;
}
if (c < 0x80) {
putchar (c);
continue;
} else {
putchar (c);
putchar (*p++);
continue;
}
}
printf ("*** %hd", l->num); /* ò╢ÄÜÉö */
//printf (",%hd", l->start_dot);
l++;
printf ("\n");
} while (++line < xptext->line);
printf ("âèâôâNâeü[âuâïé≡ò\Īé╡é▄é╖\n");
for (i = 0; i < xptext->link_table_max; i++) {
printf ("âèâôâN L%04d : %s\n", i, (xptext->link_table)[i]);
}
printf ("âCâüü[âWâèâXâgé≡ò\Īé╡é▄é╖\n");
{
IMAGE_LIST *t_ptr = image_list_top;
while (t_ptr != NULL) {
printf ("âCâüü[âW : %s\n", t_ptr->url);
t_ptr = t_ptr->next_ptr;
}
}
}
/* âAâhâîâXÆáé╔Æ╟ë┴ */
static int AddAddress (char *url, char *title)
{
FILE *fp;
/* file:// é≡ö≥é╬é╖é⌐éτ [7] */
if ((fp = fopen (&address_book[7], "a+")) != NULL) {
fprintf (fp, "<LI><A HREF=\"%s\">%s</A>\n", url, title);
fclose (fp);
McPrint ("âAâhâîâXÆáé╔ôoÿ^é╡é▄é╡é╜\n");
} else {
McPrint ("üª âAâhâîâXÆáé╔Åæé½ì₧é▀é▄é╣é±\n");
}
return (0);
}
/* âLü[ü^â}âEâXé╠â{â^âôé¬ùúé│éΩéΘé▄é┼æ╥é┬ */
void WaitReleaseAll (void)
{
int i;
do {
for (i = 0; i < 15; i++)
if (_iocs_bitsns (i))
break;
} while ((i != 15) || (_iocs_ms_getdt ()& 0xffff));
}
/* âüâCâôâïü[â`âô : ÅIù╣é╖éΘé▄é┼é▒é▒é┼âïü[âv */
static int ShowHtml (char *in_url)
{
HTTPFILE *httpfile = NULL, *old_httpfile = NULL;
XPTEXT *xptext = NULL, *old_xptext = NULL;
char load_complete = 0;
char url[256];
int sp;
int temp_line = 0;
unsigned short save_counter = 0;
int lap_time = 0;
char temp_refresh_rate = 0;
strcpy (url, in_url);
quit_flag = QUIT_NON;
freeze = !0; /* ëµû╩ìXÉVï╓Ä~ */
do {
_dos_c_locate (0, 30);
switch (quit_flag) {
case QUIT_NON: /* Æ╩ÅφÄ₧ */
if (xptext == NULL) {
if ((int) (httpfile = _dos_malloc (sizeof (HTTPFILE))) < 0) {
McDbPrint ("ShowHtml() : âüâéâèé¬æ½éΦé▄é╣é±\n");
quit_flag = QUIT_EXIT;
break;
}
httpfile->content = NULL;
strcpy (httpfile->url, url);
if (GetFile (httpfile) < 0) {
McDbPrint ("ShowHtml() : ");
McPrint (url);
McPrint (" é¬ô╟é▌ì₧é▀é▄é╣é±é┼é╡é╜\n");
_dos_mfree (httpfile);
if (((httpfile = old_httpfile) != NULL) && ((xptext = old_xptext) != NULL))
continue;
else
return (-1);
}
McDbPrint ("ShowHtml() : ");
McPrint (url);
McPrint (" é≡ô╟é▌ì₧é▌é▄é╡é╜\n");
lap_time = _iocs_ontime ();
temp_refresh_rate = 0;
/* <A HREF> é┼ .GIF/.JPG é¬ÄwÆΦé│éΩé╜Ä₧é═ */
/* .HTM âtâ@âCâïé≡âüâéâèÅπé╔ì∞ɼ */
if ((!strcmp (httpfile->content_type, "image/gif")) ||
(!strcmp (httpfile->content_type, "image/jpeg"))) {
char temp_content[1024];
char scheme[256], hostname[256], path[256], fname[256], query[256],
anchor[256];
int port;
_dos_mfree (httpfile->content); /* ô╟é±é╛ëµæ£é═Ä╠é─éΘ */
UrlSplit (url, scheme, hostname, path, fname, query, anchor, &port);
sprintf (temp_content, "<HTML><HEAD><TITLE>%s</TITLE></HEAD><BODY><BR><CENTER><IMG SRC=\"%s\"></CENTER></BODY></HTML>\r\n\0",
fname, url);
httpfile->content_length = strlen (temp_content);
httpfile->content = _dos_malloc (httpfile->content_length);
strcpy (httpfile->content_type, "text/html");
strcpy (httpfile->content, temp_content);
strcpy (httpfile->url, url);
}
/* <A HREF> é┼ .DOC/.TXT é¬ÄwÆΦé│éΩé╜Ä₧ */
if (!strcmp (httpfile->content_type, "text/plain")) {
if ((xptext = Plain2Xpression (httpfile, NULL)) == NULL) {
McDbPrint ("ShowHtml() : ");
McPrint ("üª âeâLâXâgé╠ë≡É═é╔Ä╕ösé╡é▄é╡é╜\n");
_dos_mfree (httpfile->content);
_dos_mfree (httpfile);
httpfile = NULL;
}
}
/* <A HREF> é┼ .HTM é¬ÄwÆΦé│éΩé╜Ä₧ */
if (!strcmp (httpfile->content_type, "text/html")) {
char scheme[256], hostname[256], path[256], fname[256], query[256],
anchor[256];
int port;
UrlSplit (httpfile->url, scheme, hostname, path, fname, query, anchor, &port);
McDbPrint ("ü£ éPâpâXû┌ : ");
McDbPrint (httpfile->url);
McDbPrint ("\n");
if ((xptext = Html2Xpression (httpfile, NULL)) == NULL) {
McPrint ("üª âeâLâXâgé╠ë≡É═é╔Ä╕ösé╡é▄é╡é╜\n");
_dos_mfree (httpfile->content);
_dos_mfree (httpfile);
httpfile = NULL;
}
if (anchor[0]) {
temp_line = SearchAnchor (xptext, anchor);
}
}
/* .HTM éΓ .DOC/.TXT ê╚èOé≡ô╟é▌ì₧é±é╛ÅΩìçüi.Lzh ôÖüj */
if ((httpfile != NULL)
&& (strcmp (httpfile->content_type, "text/html"))
&& (strcmp (httpfile->content_type, "text/plain"))
&& (old_xptext != NULL)) {
ReCheckLinkTable (old_xptext);
McDbPrint ("é▒é▒é▄é┼éαénéj\n");
_dos_mfree (httpfile->content);
xptext = NULL;
McDbPrint ("é▒é▒é═üH\n");
}
if (xptext == NULL) {
if (httpfile != NULL) {
if (httpfile->content != NULL)
_dos_mfree (httpfile->content);
_dos_mfree (httpfile);
httpfile = NULL;
}
}
if (httpfile == NULL) {
if (((httpfile = old_httpfile) != NULL) && ((xptext = old_xptext) != NULL))
continue;
else
return (-1);
}
xptext->current_line = temp_line;
freeze = !0; /* ëµû╩ìXÉVï╓Ä~ */
disp_xptext = xptext;
sp = _iocs_b_super (0);
DispAll (disp_xptext);
_iocs_b_super (sp);
freeze = 0; /* ëµû╩ìXÉVïûë┬ */
if (image_list_ptr != NULL) {
if (image_list_ptr->data == NULL) {
load_complete = 0;
} else {
if ((image_list_ptr->before_ptr) != NULL) {
image_list_ptr = image_list_ptr->before_ptr;
load_complete = 0;
} else {
if (t_option) {
char temp_str[256];
sprintf (temp_str, "ò`ëµÄ₧è╘ = %d\n", _iocs_ontime ()- lap_time);
McPrint (temp_str);
}
McPrint (STR_DISP_COMPLETE);
load_complete = !0;
}
}
} else {
if (t_option) {
char temp_str[256];
sprintf (temp_str, "ò`ëµÄ₧è╘ = %d\n", _iocs_ontime ()- lap_time);
McPrint (temp_str);
}
McPrint (STR_DISP_COMPLETE);
load_complete = !0;
}
/* é▒é▒é┼Åëé▀é─æOé╠ httpfile é≡Ä╠é─éΘ */
if (old_httpfile != NULL) {
if (old_httpfile->content != NULL)
_dos_mfree (old_httpfile->content);
_dos_mfree (old_httpfile);
}
FreeXptext2 (old_xptext);
FreeXptext (old_xptext);
old_httpfile = httpfile;
old_xptext = xptext;
if (++save_counter > webcache_save)
WCSave ();
break;
} else {
if (!load_complete) {
int load_success = 0; /* LoadImage() é╠ò╘éΦÆl */
McDbPrint ("ü£ éQâpâXû┌ : ");
McDbPrint (httpfile->url);
McDbPrint ("\n");
if (image_list_ptr->data == NULL)
load_success = LoadImage ();
if (image_list_ptr->before_ptr != NULL) {
image_list_ptr = image_list_ptr->before_ptr;
} else {
if (t_option) {
char temp_str[256];
sprintf (temp_str, "ò`ëµÄ₧è╘ = %d\n", _iocs_ontime ()- lap_time);
McPrint (temp_str);
}
McPrint (STR_DISP_COMPLETE);
load_complete = !0;
}
temp_refresh_rate++;
if ((load_complete)
|| ((load_success == 0) && (temp_refresh_rate >= refresh_rate))) {
temp_refresh_rate = 0;
xptext = Html2Xpression (httpfile, xptext);
freeze = !0; /* ëµû╩ìXÉVï╓Ä~ */
xptext->current_line = disp_xptext->current_line;
xptext->link_table = disp_xptext->link_table;
xptext->link_table_buffer = disp_xptext->link_table_buffer;
xptext->image_table = disp_xptext->image_table;
disp_xptext = xptext;
sp = _iocs_b_super (0);
DispAll (disp_xptext);
_iocs_b_super (sp);
FreeXptext (old_xptext);
old_xptext = xptext;
freeze = 0; /* ëµû╩ìXÉVïûë┬ */
}
}
}
break;
case QUIT_RETURN: /* ù╝âNâèâbâNé┼éPé┬æOé╔ */
{
char *t;
freeze = !0; /* ëµû╩ìXÉVï╓Ä~ */
WaitReleaseAll ();
if ((t = BeforeHistory (httpfile->url, &temp_line)) != NULL) {
strcpy (url, t);
httpfile = NULL;
xptext = NULL;
}
quit_flag = QUIT_NON;
freeze = 0; /* ëµû╩ìXÉVïûë┬ */
}
break;
case QUIT_LINK:/* â{â^âôé¬ëƒé│éΩé─âèâôâNɵé╓ */
{
char scheme[256], hostname[256], path[256], fname[256], query[256], anchor[256];
char scheme2[256], hostname2[256], path2[256], fname2[256], query2[256],
anchor2[256];
int port;
int port2;
freeze = !0; /* ëµû╩ìXÉVï╓Ä~ */
WaitReleaseAll ();
if (!load_complete) {
image_list_ptr = image_list_top;
load_complete = !0;
}
UrlSplit (url, scheme, hostname, path, fname, query, anchor, &port);
UrlSplit ((disp_xptext->link_table)[in_link_num].url,
scheme2, hostname2, path2, fname2, query2, anchor2, &port2);
/* URL é¬ "#foo" üiâtâ@âCâïû╝é╚é╡üjé⌐üH */
if ((*fname2 == '\0') && (*anchor2 == '#'))
UrlCat (url, scheme, hostname, path, fname, query, anchor2, port);
else
UrlCat (url, scheme, hostname, path,
(disp_xptext->link_table)[in_link_num].url, query, anchor, port);
AddHistory (url, httpfile->url, xptext->current_line);
temp_line = 0;
httpfile = NULL;
xptext = NULL;
quit_flag = QUIT_NON;
freeze = 0; /* ëµû╩ìXÉVïûë┬ */
break;
}
case QUIT_ABORT: /* [ESC] é┼ô╟é▌ì₧é▌ÆåÆf */
freeze = !0; /* ëµû╩ìXÉVï╓Ä~ */
WaitReleaseAll ();
if (!load_complete) {
image_list_ptr = image_list_top;
McPrint ("üª ÆåÆfé╡é▄é╡é╜\n");
McPrint (STR_DISP_COMPLETE);
load_complete = !0;
}
quit_flag = QUIT_NON;
freeze = 0; /* ëµû╩ìXÉVïûë┬ */
break;
case QUIT_TOUROKU: /* [ôoÿ^] é┼âAâhâîâXÆáé╔ôoÿ^ */
freeze = !0; /* ëµû╩ìXÉVï╓Ä~ */
WaitReleaseAll ();
AddAddress (httpfile->url, disp_xptext->title);
quit_flag = QUIT_NON;
freeze = 0; /* ëµû╩ìXÉVïûë┬ */
break;
case QUIT_ADDRESSBOOK: /* [HOME] é¬ëƒé│éΩé─âAâhâîâXÆáé╓ */
freeze = !0; /* ëµû╩ìXÉVï╓Ä~ */
WaitReleaseAll ();
if (!load_complete) {
image_list_ptr = image_list_top;
load_complete = !0;
}
temp_line = 0;
strcpy (url, address_book);
httpfile = NULL;
xptext = NULL;
quit_flag = QUIT_NON;
freeze = 0; /* ëµû╩ìXÉVïûë┬ */
break;
case QUIT_REDRAW:
freeze = !0; /* ëµû╩ìXÉVï╓Ä~ */
WaitReleaseAll ();
sp = _iocs_b_super (0);
hide_mouse_cursor ();
_iocs_b_super (sp);
ClearText ();
DispBack ();
sp = _iocs_b_super (0);
cut_disp (&WebPage2, (void *) (TEXTVRAM + (512 + 8 + 8) / 8 + 2 * 0x20000), 128);
cut_disp (&WebPage3, (void *) (TEXTVRAM + (512 + 8 + 8) / 8 + 3 * 0x20000), 128);
DispAll (disp_xptext);
show_mouse_cursor ();
_iocs_b_super (sp);
quit_flag = QUIT_NON;
freeze = 0; /* ëµû╩ìXÉVïûë┬ */
break;
case QUIT_TVERROR:
printf ("textview.s é┼âGâëü[ö¡É╢\n");
quit_flag = QUIT_EXIT;
break;
case QUIT_PROCESS:
if (d_option) {
spawnlp (P_WAIT, "PROCESS.X", "PROCESS.X", NULL);
quit_flag = QUIT_EXIT;
} else {
quit_flag = QUIT_NON;
}
break;
case QUIT_DUMP:
if (d_option) {
DumpXptext (xptext);
quit_flag = QUIT_EXIT;
} else {
quit_flag = QUIT_NON;
}
break;
case QUIT_EDIT:
freeze = !0; /* ëµû╩ìXÉVï╓Ä~ */
WaitReleaseAll ();
if (!load_complete) {
image_list_ptr = image_list_top;
load_complete = !0;
}
temp_line = 0;
Tini2 ();
if (disp_xptext != NULL) {
char temp_str[256];
sprintf (temp_str, &text_editor[0],
((disp_xptext->line_ptr)[disp_xptext->current_line]).org_line);
strcat (temp_str, " ");
if (!strnicmp (httpfile->url, "file://", 7))
strcat (temp_str, (httpfile->url + 7)); /* file:// é≡ö≥é╬é╖ */
else
strcat (temp_str, httpfile->url);
_toslash (temp_str);
system (temp_str); /* âeâLâXâgâGâfâBâ^ïNô« */
}
Init2 ();
strcpy (url, httpfile->url);
httpfile = NULL;
xptext = NULL;
freeze = 0; /* ëµû╩ìXÉVïûë┬ */
quit_flag = QUIT_NON;
break;
case QUIT_SHELL:
freeze = !0; /* ëµû╩ìXÉVï╓Ä~ */
WaitReleaseAll ();
Tini2 ();
system (""); /* âVâFâïïNô« */
Init2 ();
strcpy (url, httpfile->url);
httpfile = NULL;
xptext = NULL;
freeze = 0; /* ëµû╩ìXÉVïûë┬ */
quit_flag = QUIT_NON;
break;
case QUIT_EXIT:
default:
quit_flag = QUIT_EXIT;
break;
}
} while (quit_flag != QUIT_EXIT);
FreeXptext2 (xptext);
FreeXptext (xptext);
if (httpfile != NULL) {
if (httpfile->content != NULL)
_dos_mfree (httpfile->content);
_dos_mfree (httpfile);
}
return (0);
}
/* ïNô«Ä₧ïyé╤ÄqâvâìâZâXïNô«îπé╔î─é╬éΩéΘÅëè·ë╗âïü[â`âô */
static void Init2 (void)
{
int i;
int sp;
int palet_table[]=
{
0, 1, 2, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6
};
unsigned short crtc_data[8] =
{
0x89, 0x0e, 0x1c, 0x7c, 0x237, 0x5, 0x028, 0x228
};
unsigned short *crtc_r0 = (unsigned short *) 0xe80000;
unsigned short *crtc_r20 = (unsigned short *) 0xe80028;
unsigned short *vctrl_r1 = (unsigned short *) 0xe82400;
unsigned short *vctrl_r2 = (unsigned short *) 0xe82500;
unsigned short *vctrl_r3 = (unsigned short *) 0xe82600;
unsigned short *p;
_dos_c_width (5); /* DOS âîâxâïé┼é═ 512x512 65536 ÉFâéü[âh */
_iocs_g_clr_on ();
_dos_c_curoff ();
_dos_c_locate (0, 30);
old_fnkmod = _dos_c_fnkmod (-1);
_dos_c_fnkmod (3);
_iocs_ms_init ();
_iocs_skey_mod (0, 0, 0);
_iocs_ms_limit (7, 7, 768 - 8, 512 - 8);
_iocs_tgusemd (0, 2);
_iocs_tgusemd (1, 2);
sp = _iocs_b_super (0);
for (i = 0, p = crtc_r0; i < 8; i++)
*p++ = crtc_data[i];
*crtc_r20 = 0x0316; /* 768x512 65536 ÉFÉ│ò√î`âéü[âhé╔ */
*vctrl_r1 = 0x0003;
*vctrl_r2 = 0x32e4; /* 0x31e4 é╛é╞â_âüüH */
*vctrl_r3 = 0x002f;
_iocs_b_super (sp);
for (i = 0; i < 16; i++)
_iocs_tpalet2 (i, (int) config_color[palet_table[i]]);
DispBack ();
sp = _iocs_b_super (0);
cut_disp (&WebPage2, (void *) (TEXTVRAM + (512 + 8 + 8) / 8 + 2 * 0x20000), 128);
cut_disp (&WebPage3, (void *) (TEXTVRAM + (512 + 8 + 8) / 8 + 3 * 0x20000), 128);
_iocs_b_super (sp);
disp_xptext = NULL;
_dos_breakck (2); /* BREAK â`âFâbâNé≡ÄEé╖ */
_dos_intvcs (0xfff1, interrupt_abort); /* _CTRLVC */
_dos_intvcs (0xfff2, interrupt_abort); /* _ERRJVC */
_iocs_vdispst (TextVdisp, 0, 1);
}
/* ïNô«Ä₧é╔éPôxé╛é»î─é╬éΩéΘÅëè·ë╗âïü[â`âô */
static int Init (void)
{
old_screen_mode = _dos_c_width (-1);
printf ("WebXpression ïNô«Æå...\n");
GetFileInit ();
McInit ();
printf ("WebCache.env é≡ô╟é▌ì₧é±é┼éóé▄é╖\n");
WCInit ();
InitHtml2Xpression ();
InitHistory ();
Init2 ();
return (0);
}
/* ÅIù╣Ä₧ïyé╤ÄqâvâìâZâXïNô«æOé╔î─é╬éΩéΘÅIù╣âïü[â`âô */
static void Tini2 (void)
{
_iocs_vdispst (0, 0, 0);
ClearText ();
_iocs_tgusemd (0, 3);
_iocs_tgusemd (1, 3);
_iocs_skey_mod (-1, 0, 0);
_iocs_ms_init ();
_dos_c_width (old_screen_mode);
_dos_kflushio (0xff); /* âLü[âoâbâtâ@é≡âNâèâA */
_dos_c_fnkmod (old_fnkmod);
_dos_c_curon ();
}
/* ÅIù╣Ä₧é╔éPôxé╛é»î─é╬éΩéΘÅIù╣âïü[â`âô */
static int Tini (void)
{
Tini2 ();
printf ("WebCache.env é≡ò█æ╢é╡é─éóé▄é╖\n");
WCTini ();
return (0);
}
int main (int argc, char *argv[])
{
int i;
int slash_flag = 0;
char *fname = NULL;
char *cnf_fname = "WebXpression.cnf";
int exit_code = 0;
{
char *temp;
temp = getenv ("SLASH");
if ((temp != NULL) && (*temp == '/')) {
slash_flag = 1;
}
}
for (i = 1; i < argc; i++) {
if (('-' == *argv[i]) || ((slash_flag == 0) && ('/' == *argv[i]))) {
switch (*(argv[i] + 1)) {
case 'c':
case 'C':
cnf_fname = argv[i] + 2;
break;
case 'd':
case 'D':
d_option = !0;
break;
case 't':
case 'T':
t_option = !0;
break;
default:
usage ();
return (-1);
}
} else {
fname = argv[i];
}
}
mypsp = _dos_getpdb ();
strcpy (address_book, "file://");
strcat (address_book, mypsp->exe_path);
_addlastsep (address_book);
strcat (address_book, "AddressBook.htm");
if (fname == NULL)
fname = address_book;
if (InitConfig (cnf_fname) < 0)
return (-1);
if (!Init ())
exit_code = ShowHtml (fname);
Tini ();
if (exit_code < 0) {
printf ("\n%s é¬î⌐é┬é⌐éΦé▄é╣é±\n", fname);
return (-1);
}
return (0);
}